#pragma once

#include "ICommand.h"
#include "StateContex.h"

class Command : public ICommand
{
public:
	BEGIN_DEFINE_CLASS(CLASSID_NULL)
		DEFINE_INTERFACE_ENTRY(ICommand)
	END_DEFINE_CLASS()

	Command()
	{
		ctx = NULL;
		arg = NULL;
	}
	virtual void Execute() = 0;

	void SetStateContext(StateContext* ctx){this->ctx = ctx;}
	void SetArgument(ExecuteArgument* arg){this->arg = arg;}

protected:
	StateContext* ctx;
	ExecuteArgument* arg;
};